package com.bondar.interfaces;

import java.util.Collection;
import java.util.Iterator;

public interface Set<T> {
	
	/**
	 * Returns true if this set contains a mapping for the specified element
	 * 
	 * @param elements 
	 * @return true if set contains element, otherwise false
	 */
	public boolean contains(Collection<T> elements);
	
	/**
	 * Returns true if this set contains a mapping for the specified element
	 * 
	 * @param elements 
	 * @return true if set contains element, otherwise false
	 */
	public boolean contains(T element);
	
	/**
	 * Add specified element to the set
	 * @param element
	 */
	public void add(T element);
	
	/**
	 * Remove specified element from the set
	 * @param element
	 * @return
	 */
	public boolean remove(T element);
	
	/**
	 * Return size of the set
	 * @return int size
	 */
	public int size();
	
	/**
	 * Check whether set is empty
	 * @return
	 */
	public boolean isEmpty();
	
	/**
	 * Remove all elements from the set
	 */
	public void clear();
	
	/**
	 * Return iterator
	 * @return
	 */
	public Iterator<T> iterator();

}
